package br.pucrs.simulador.comum;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class LeitorConsole {

	public static double lerDadoDouble(String descricaoDadoSerLido) {

		double result = 0;

		try {
			BufferedReader in = new BufferedReader(new InputStreamReader(
					System.in));
			String str = "";

			System.out.print("> " + descricaoDadoSerLido);
			str = in.readLine();

			result = Double.parseDouble(str);

		}

		catch (IOException e) {
			System.out.println("IO Exception. Informe o valor novamente.");
			result = lerDadoDouble(descricaoDadoSerLido);
		} catch (NumberFormatException e) {
			System.out
					.println("Numero informado nao e um numero valido. Informe novamente:");
			result = lerDadoDouble(descricaoDadoSerLido);
		}

		return result;

	}
	
	public static int lerDadoInt(String descricaoDadoSerLido) {

		int result = 0;

		try {
			BufferedReader in = new BufferedReader(new InputStreamReader(
					System.in));
			String str = "";

			System.out.print("> " + descricaoDadoSerLido);
			str = in.readLine();

			result = Integer.parseInt(str);

		}

		catch (IOException e) {
			System.out.println("IO Exception. Informe o valor novamente.");
			result = lerDadoInt(descricaoDadoSerLido);
		} catch (NumberFormatException e) {
			System.out
					.println("Numero informado nao e um numero valido. Informe novamente:");
			result = lerDadoInt(descricaoDadoSerLido);
		}

		return result;

	}
	
	public static String lerDadoString(String descricaoDadoSerLido) {

		String result = null;

		try {
			BufferedReader in = new BufferedReader(new InputStreamReader(
					System.in));
			String str = "";

			System.out.print("> " + descricaoDadoSerLido);
			str = in.readLine();

			result = str;

		}

		catch (IOException e) {
			System.out.println("IO Exception. Informe o valor novamente.");
			result = lerDadoString(descricaoDadoSerLido);
		}

		return result;

	}


}
